package com.cgy.utils.tokenizer.dictionary;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 词性
 *
 * @author CH
 */
@Getter
@AllArgsConstructor
public enum NatureDictionary {

    /**
     * 区别语素
     */
    bg("bg", "区别语素"),

    /**
     * 数语素
     */
    mg("mg", "数语素"),

    /**
     * 名词性惯用语
     */
    nl("nl", "名词性惯用语"),

    /**
     * 字母专名
     */
    nx("nx", "字母专名"),

    /**
     * 量词语素
     */
    qg("qg", "量词语素"),

    /**
     * 助词
     */
    ud("ud", "助词"),

    /**
     * 助词
     */
    uj("uj", "助词"),

    /**
     * 着
     */
    uz("uz", "着"),

    /**
     * 过
     */
    ug("ug", "过"),

    /**
     * 连词
     */
    ul("ul", "连词"),

    /**
     * 连词
     */
    uv("uv", "连词"),

    /**
     * 语气语素
     */
    yg("yg", "语气语素"),

    /**
     * 状态词
     */
    zg("zg", "状态词"),

    // 以上标签来自ICT，以下标签来自北大

    /**
     * 名词
     */
    n("n", "名词"),

    /**
     * 人名
     */
    nr("nr", "人名"),

    /**
     * 日语人名
     */
    nrj("nrj", "日语人名"),

    /**
     * 音译人名
     */
    nrf("nrf", "音译人名"),

    /**
     * 复姓
     */
    nr1("nr1", "复姓"),

    /**
     * 蒙古姓名
     */
    nr2("nr2", "蒙古姓名"),

    /**
     * 地名
     */
    ns("ns", "地名"),

    /**
     * 音译地名
     */
    nsf("nsf", "音译地名"),

    /**
     * 机构团体名
     */
    nt("nt", "机构团体名"),

    /**
     * 公司名
     */
    ntc("ntc", "公司名"),

    /**
     * 工厂
     */
    ntcf("ntcf", "工厂"),

    /**
     * 银行
     */
    ntcb("ntcb", "银行"),

    /**
     * 酒店宾馆
     */
    ntch("ntch", "酒店宾馆"),

    /**
     * 政府机构
     */
    nto("nto", "政府机构"),

    /**
     * 大学
     */
    ntu("ntu", "大学"),

    /**
     * 中小学
     */
    nts("nts", "中小学"),

    /**
     * 医院
     */
    nth("nth", "医院"),

    /**
     * 医药疾病等健康相关名词
     */
    nh("nh", "医药疾病等健康相关名词"),

    /**
     * 药品
     */
    nhm("nhm", "药品"),

    /**
     * 疾病
     */
    nhd("nhd", "疾病"),

    /**
     * 工作相关名词
     */
    nn("nn", "工作相关名词"),

    /**
     * 职务职称
     */
    nnt("nnt", "职务职称"),

    /**
     * 职业
     */
    nnd("nnd", "职业"),

    /**
     * 名词性语素
     */
    ng("ng", "名词性语素"),

    /**
     * 食品，比如“薯片”
     */
    nf("nf", "食品"),

    /**
     * 机构相关（不是独立机构名）
     */
    ni("ni", "机构相关"),

    /**
     * 教育相关机构
     */
    nit("nit", "教育相关机构"),

    /**
     * 下属机构
     */
    nic("nic", "下属机构"),

    /**
     * 机构后缀
     */
    nis("nis", "机构后缀"),

    /**
     * 物品名
     */
    nm("nm", "物品名"),

    /**
     * 化学品名
     */
    nmc("nmc", "化学品名"),

    /**
     * 生物名
     */
    nb("nb", "生物名"),

    /**
     * 动物名
     */
    nba("nba", "动物名"),

    /**
     * 动物纲目
     */
    nbc("nbc", "动物纲目"),

    /**
     * 植物名
     */
    nbp("nbp", "植物名"),

    /**
     * 其他专名
     */
    nz("nz", "其他专名"),

    /**
     * 学术词汇
     */
    g("g", "学术词汇"),

    /**
     * 数学相关词汇
     */
    gm("gm", "数学相关词汇"),

    /**
     * 物理相关词汇
     */
    gp("gp", "物理相关词汇"),

    /**
     * 化学相关词汇
     */
    gc("gc", "化学相关词汇"),

    /**
     * 生物相关词汇
     */
    gb("gb", "生物相关词汇"),

    /**
     * 生物类别
     */
    gbc("gbc", "生物类别"),

    /**
     * 地理地质相关词汇
     */
    gg("gg", "地理地质相关词汇"),

    /**
     * 计算机相关词汇
     */
    gi("gi", "计算机相关词汇"),

    /**
     * 简称略语
     */
    j("j", "简称略语"),

    /**
     * 成语
     */
    i("i", "成语"),

    /**
     * 习用语
     */
    l("l", "习用语"),

    /**
     * 时间词
     */
    t("t", "时间词"),

    /**
     * 时间词性语素
     */
    tg("tg", "时间词性语素"),

    /**
     * 处所词
     */
    s("s", "处所词"),

    /**
     * 方位词
     */
    f("f", "方位词"),

    /**
     * 动词
     */
    v("v", "动词"),

    /**
     * 副动词
     */
    vd("vd", "副动词"),

    /**
     * 名动词
     */
    vn("vn", "名动词"),

    /**
     * 动词“是”
     */
    vshi("vshi", "动词“是”"),

    /**
     * 动词“有”
     */
    vyou("vyou", "动词“有”"),

    /**
     * 趋向动词
     */
    vf("vf", "趋向动词"),

    /**
     * 形式动词
     */
    vx("vx", "形式动词"),

    /**
     * 不及物动词（内动词）
     */
    vi("vi", "不及物动词（内动词）"),

    /**
     * 动词性惯用语
     */
    vl("vl", "动词性惯用语"),

    /**
     * 动词性语素
     */
    vg("vg", "动词性语素"),

    /**
     * 形容词
     */
    a("a", "形容词"),

    /**
     * 副形词
     */
    ad("ad", "副形词"),

    /**
     * 名形词
     */
    an("an", "名形词"),

    /**
     * 形容词性语素
     */
    ag("ag", "形容词性语素"),

    /**
     * 形容词性惯用语
     */
    al("al", "形容词性惯用语"),

    /**
     * 区别词
     */
    b("b", "区别词"),

    /**
     * 区别词性惯用语
     */
    bl("bl", "区别词性惯用语"),

    /**
     * 状态词
     */
    z("z", "状态词"),

    /**
     * 代词
     */
    r("r", "代词"),

    /**
     * 人称代词
     */
    rr("rr", "人称代词"),

    /**
     * 指示代词
     */
    rz("rz", "指示代词"),

    /**
     * 时间指示代词
     */
    rzt("rzt", "时间指示代词"),

    /**
     * 处所指示代词
     */
    rzs("rzs", "处所指示代词"),

    /**
     * 谓词性指示代词
     */
    rzv("rzv", "谓词性指示代词"),

    /**
     * 疑问代词
     */
    ry("ry", "疑问代词"),

    /**
     * 时间疑问代词
     */
    ryt("ryt", "时间疑问代词"),

    /**
     * 处所疑问代词
     */
    rys("rys", "处所疑问代词"),

    /**
     * 谓词性疑问代词
     */
    ryv("ryv", "谓词性疑问代词"),

    /**
     * 代词性语素
     */
    rg("rg", "代词性语素"),

    /**
     * 古汉语代词性语素
     */
    Rg("Rg", "古汉语代词性语素"),

    /**
     * 数词
     */
    m("m", "数词"),

    /**
     * 数量词
     */
    mq("mq", "数量词"),

    /**
     * 甲乙丙丁之类的数词
     */
    Mg("Mg", "甲乙丙丁之类的数词"),

    /**
     * 量词
     */
    q("q", "量词"),

    /**
     * 动量词
     */
    qv("qv", "动量词"),

    /**
     * 时量词
     */
    qt("qt", "时量词"),

    /**
     * 副词
     */
    d("d", "副词"),

    /**
     * 辄,俱,复之类的副词
     */
    dg("dg", "辄,俱,复之类的副词"),

    /**
     * 连语
     */
    dl("dl", "连语"),

    /**
     * 介词
     */
    p("p", "介词"),

    /**
     * 介词“把”
     */
    pba("pba", "介词“把”"),

    /**
     * 介词“被”
     */
    pbei("pbei", "介词“被”"),

    /**
     * 连词
     */
    c("c", "连词"),

    /**
     * 并列连词
     */
    cc("cc", "并列连词"),

    /**
     * 助词
     */
    u("u", "助词"),

    /**
     * 着
     */
    uzhe("uzhe", "着"),

    /**
     * 了 喽
     */
    ule("ule", "了 喽"),

    /**
     * 过
     */
    uguo("uguo", "过"),

    /**
     * 的 底
     */
    ude1("ude1", "的 底"),

    /**
     * 地
     */
    ude2("ude2", "地"),

    /**
     * 得
     */
    ude3("ude3", "得"),

    /**
     * 所
     */
    usuo("usuo", "所"),

    /**
     * 等 等等 云云
     */
    udeng("udeng", "等 等等 云云"),

    /**
     * 一样 一般 似的 般
     */
    uyy("uyy", "一样 一般 似的 般"),

    /**
     * 的话
     */
    udh("udh", "的话"),

    /**
     * 来讲 来说 而言 说来
     */
    uls("uls", "来讲 来说 而言 说来"),

    /**
     * 之
     */
    uzhi("uzhi", "之"),

    /**
     * 连 （“连小学生都会”）
     */
    ulian("ulian", "连"),

    /**
     * 叹词
     */
    e("e", "叹词"),

    /**
     * 语气词(delete yg)
     */
    y("y", "语气词"),

    /**
     * 拟声词
     */
    o("o", "拟声词"),

    /**
     * 前缀
     */
    h("h", "前缀"),

    /**
     * 后缀
     */
    k("k", "后缀"),

    /**
     * 字符串
     */
    x("x", "字符串"),

    /**
     * 非语素字
     */
    xx("xx", "非语素字"),

    /**
     * 网址URL
     */
    xu("xu", "网址URL"),

    /**
     * 标点符号
     */
    w("w", "标点符号"),

    /**
     * 左括号，全角：（ 〔  ［  ｛  《 【  〖 〈   半角：( [ { <
     */
    wkz("wkz", "左括号，全角：（ 〔  ［  ｛  《 【  〖 〈   半角：( [ { <"),

    /**
     * 右括号，全角：） 〕  ］ ｝ 》  】 〗 〉 半角： ) ] { >
     */
    wky("wky", "右括号，全角：） 〕  ］ ｝ 》  】 〗 〉 半角： ) ] { >"),

    /**
     * 左引号，全角：“ ‘ 『
     */
    wyz("wyz", "左引号，全角：“ ‘ 『"),

    /**
     * 右引号，全角：” ’ 』
     */
    wyy("wyy", "右引号，全角：” ’ 』"),

    /**
     * 句号，全角：。
     */
    wj("wj", "句号，全角：。"),

    /**
     * 问号，全角：？ 半角：?
     */
    ww("ww", "问号，全角：？ 半角：?"),

    /**
     * 叹号，全角：！ 半角：!
     */
    wt("wt", "叹号，全角：！ 半角：!"),

    /**
     * 逗号，全角：， 半角：,
     */
    wd("wd", "逗号，全角：， 半角：,"),

    /**
     * 分号，全角：； 半角： ;
     */
    wf("wf", "分号，全角：； 半角： ;"),

    /**
     * 顿号，全角：、
     */
    wn("wn", "顿号，全角：、"),

    /**
     * 冒号，全角：： 半角： :
     */
    wm("wm", "冒号，全角：： 半角： :"),

    /**
     * 省略号，全角：……  …
     */
    ws("ws", "省略号，全角：……  …"),

    /**
     * 破折号，全角：——   －－   ——－   半角：---  ----
     */
    wp("wp", "破折号，全角：——   －－   ——－   半角：---  ----"),

    /**
     * 百分号千分号，全角：％ ‰   半角：%
     */
    wb("wb", "百分号千分号，全角：％ ‰   半角：%"),

    /**
     * 单位符号，全角：￥ ＄ ￡  °  ℃  半角：$
     */
    wh("wh", " 单位符号，全角：￥ ＄ ￡  °  ℃  半角：$"),

    /**
     * 仅用于终##终，不会出现在分词结果中
     */
    end("end", "仅用于终##终，不会出现在分词结果中"),

    /**
     * 仅用于始##始，不会出现在分词结果中
     */
    begin("begin", "仅用于始##始，不会出现在分词结果中");

    private String speech;
    private String describe;

    public static String describe(String speech) {
        NatureDictionary[] values = NatureDictionary.values();
        for (NatureDictionary value : values) {
            return value.getSpeech().equals(speech) ? value.getDescribe() : "";
        }
        return "";
    }
}
